/**
 * Project Name:fire-industry-DM-center
 * File Name:IRedisService.java
 * Package Name:com.firestone.service.base
 * Date:2018年3月13日下午4:38:13
 *
*/

package com.firestone.service.base;

import java.util.List;

/**
 * @Description: TODO(REDIS业务封装)
 * @author CAIYJ
 * @date 2018年3月13日 下午4:38:13
 */
public interface IRedisService {

    /**
     * 删除列表中对应值的元素
     *
     * @param key
     *            列表名
     * @param count
     *            删除多少个相同的元素
     * @param value
     *            数据
     * @return
     */
    public long lrem(String key, long count, String value);

    /**
     * 返回指定列表范围内的元素
     *
     * @param key
     *            列表名
     * @param start
     *            开始位置
     * @param end
     *            结束位置
     * @return
     */
    public List<?> lrange(String key, long start, long end);

    /**
     * 通过key删除（字节）
     *
     * @param key
     */
    public void del(byte[] key);

    /**
     * 通过key删除
     *
     * @param key
     */
    public void del(String key);

    /**
     * 添加key value 并且设置存活时间(byte)
     *
     * @param key
     * @param value
     * @param liveTime
     *            单位(秒)
     */
    public void set(byte[] key, byte[] value, int liveTime);

    /**
     * 添加key value 并且设置存活时间
     *
     * @param key
     * @param value
     * @param liveTime
     *            单位(秒)
     */
    public void set(String key, String value, int liveTime);

    /**
     * 添加key value
     *
     * @param key
     * @param value
     */
    public void set(String key, String value);

    /**
     * 添加key value (字节)(序列化)
     *
     * @param key
     * @param value
     */
    public void set(byte[] key, byte[] value);

    /**
     * 获取redis value (String)
     *
     * @param key
     * @return
     */
    public String get(String key);

    /**
     * 获取redis value (byte [] )(反序列化)
     *
     * @param key
     * @return
     */
    public byte[] get(byte[] key);

    /**
     * 检查key是否已经存在
     *
     * @param key
     * @return 存在返回true
     */
    public boolean exists(String key);

    public boolean exists(byte[] key);

    /**
     * 给key设置存活时间
     * 
     * @param key
     * @param seconds
     * @return
     */
    public boolean expire(String key, int seconds);

}
